package controller;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import modelo.Funcionario;

public class ControllerManterFuncionario extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public ControllerManterFuncionario() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String operacao = request.getParameter("operacao");
		
		try{
			if("cadastrarFuncionario".equals(operacao)){
				
				Funcionario funcionario = new Funcionario();
					funcionario.setCodCargo(new Integer(request.getParameter("cargo")));
					funcionario.setNmNomeFuncionario(request.getParameter("nome"));
					funcionario.setNmCTPS(new Integer(request.getParameter("ctps")));
					funcionario.setNmCPF(new Integer(request.getParameter("cpf")));
					funcionario.setNmDataNascimento(request.getParameter("datanascimento"));
					funcionario.setNmEndereco(request.getParameter("endereco"));
					funcionario.setNmNumero(request.getParameter("endereco-numero"));
					funcionario.setNmSenha(request.getParameter("senha"));
					
					funcionario.cadastrarFuncionario();
					
					request.getRequestDispatcher("Funcionario-consultar.jsp").forward(request,response);
					
			} else if ("excluirFuncionario".equals(operacao)){
				
				Funcionario funcionario = new Funcionario();
					funcionario.setCodFuncionario(new Integer(request.getParameter("codFuncionario")));
					
					funcionario.excluirFuncionario();
					
					request.getRequestDispatcher("Funcionario-consultar.jsp").forward(request, response);
					
			} else if ("redirecionarEditarFuncionario".equals(operacao)){
				
				selecionarFuncionario(request, response);
				
				request.getSession().setAttribute("operacao", "editarFuncionario");
				
				request.getSession().setAttribute("codFuncionario", new Integer(request.getParameter("funcionario")));
				
				request.getRequestDispatcher("Funcionario-editar.jsp").forward(request, response);
				
			} else if ("editarFuncionario".equals(operacao)){
				
				Funcionario funcionario = new Funcionario();
					funcionario.setCodFuncionario(new Integer(request.getParameter("codFuncionario")));
					funcionario.setCodCargo(new Integer(request.getParameter("cargo")));
					//funcionario.setNmNomeFuncionario(request.getParameter("nome"));
					//funcionario.setNmCTPS(new Integer(request.getParameter("ctps")));
					//funcionario.setNmCPF(new Integer(request.getParameter("cpf")));
					//funcionario.setNmDataNascimento(request.getParameter("datanascimento"));
					funcionario.setNmEndereco(request.getParameter("endereco"));
					funcionario.setNmNumero(request.getParameter("endereco-numero"));
					funcionario.setNmSenha(request.getParameter("senha"));
					
					funcionario.editarFuncionario();
					
					request.getRequestDispatcher("Funcionario-consultar.jsp").forward(request, response);
			}
			
		}catch (Exception e) {
			// CHAMA O METODO DE ERRO
			tratarErro(request, response, e);
		} // FIM TRY
	}
	
	private Funcionario selecionarFuncionario(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// VARIAVEL LISTA DE OBJETO FUNCIONARIO
		List<Funcionario> retorno = null;
		// OBEJTO PRODUTO COM VALORES NULOS
		Funcionario funcionarioSelecionado = null;
		
		if(request.getParameter("funcionario") != null){
			List<Funcionario> funcionarios = (List) request.getSession().getAttribute("listaFuncionarios");
			int l = Integer.parseInt(request.getParameter("funcionario"));
			for (Iterator<Funcionario> it = funcionarios.iterator(); it.hasNext();) {
				funcionarioSelecionado = (Funcionario) it.next();
				if (funcionarioSelecionado.getCodFuncionario() == l) {
					break;
				}
			}
			request.getSession().setAttribute("funcionarioSelecionado", funcionarioSelecionado);
		}
		// RETORNA O VALOR SELECIONADO 
		return funcionarioSelecionado;	
	}
	
	private void tratarErro(HttpServletRequest request, HttpServletResponse response, Exception e) throws ServletException, IOException {
		
		request.getSession().setAttribute("erro", e.toString());
		request.getRequestDispatcher("erro.jsp").forward(request, response);
	} // FIM TRATA ERRO
}
